#include "GuiInstanceQuery_Parser.h"

namespace vl
{
	namespace presentation
	{
/***********************************************************************
ParserText
***********************************************************************/

const wchar_t parserTextBuffer[] = 
L"\r\n" L""
L"\r\n" L"class Query"
L"\r\n" L"{"
L"\r\n" L"}"
L"\r\n" L""
L"\r\n" L"enum NameOption"
L"\r\n" L"{"
L"\r\n" L"\tSpecified,"
L"\r\n" L"\tAny,"
L"\r\n" L"}"
L"\r\n" L""
L"\r\n" L"enum ChildOption"
L"\r\n" L"{"
L"\r\n" L"\tDirect,"
L"\r\n" L"\tIndirect,"
L"\r\n" L"}"
L"\r\n" L""
L"\r\n" L"class PrimaryQuery : Query"
L"\r\n" L"{"
L"\r\n" L"\tChildOption\t\tchildOption;"
L"\r\n" L"\tNameOption\t\tattributeNameOption;"
L"\r\n" L"\ttoken\t\t\tattributeName;"
L"\r\n" L"\tNameOption\t\ttypeNameOption;"
L"\r\n" L"\ttoken\t\t\ttypeName;"
L"\r\n" L"\ttoken\t\t\treferenceName;"
L"\r\n" L"}"
L"\r\n" L""
L"\r\n" L"class CascadeQuery : Query"
L"\r\n" L"{"
L"\r\n" L"\tQuery\t\t\tparent;"
L"\r\n" L"\tQuery\t\t\tchild;"
L"\r\n" L"}"
L"\r\n" L""
L"\r\n" L"enum BinaryOperator"
L"\r\n" L"{"
L"\r\n" L"\tExclusiveOr,"
L"\r\n" L"\tIntersect,"
L"\r\n" L"\tUnion,"
L"\r\n" L"\tSubstract,"
L"\r\n" L"}"
L"\r\n" L""
L"\r\n" L"class SetQuery : Query"
L"\r\n" L"{"
L"\r\n" L"\tQuery\t\t\tfirst;"
L"\r\n" L"\tQuery\t\t\tsecond;"
L"\r\n" L"\tBinaryOperator\top;"
L"\r\n" L"}"
L"\r\n" L""
L"\r\n" L"token INDIRECT = \"////\";"
L"\r\n" L"token DIRECT = \"//\";"
L"\r\n" L"token NAME = \"[a-zA-Z_][a-zA-Z0-9]*\";"
L"\r\n" L"token WILDCARD = \"/*\";"
L"\r\n" L"token OPEN = \"/(\";"
L"\r\n" L"token CLOSE = \"/)\";"
L"\r\n" L"token XOR = \"/^\";"
L"\r\n" L"token INTERSECT = \"/*\";"
L"\r\n" L"token UNION = \"/+\";"
L"\r\n" L"token SUBSTRACT = \"-\";"
L"\r\n" L"token ATTRIBUTE = \"@\";"
L"\r\n" L"token COLON = \":\";"
L"\r\n" L"token DOT = \".\";"
L"\r\n" L""
L"\r\n" L"discardtoken SPACE = \"/s+\";"
L"\r\n" L""
L"\r\n" L"rule PrimaryQuery QPrimaryFragment"
L"\r\n" L"\t=\t("
L"\r\n" L"\t\t\t(NAME : typeName with {typeNameOption=\"Specified\"})"
L"\r\n" L"\t\t\t| (\"*\" with {typeNameOption=\"Any\"})"
L"\r\n" L"\t\t)"
L"\r\n" L"\t\t[\".\" NAME : referenceName] as PrimaryQuery"
L"\r\n" L"\t;"
L"\r\n" L""
L"\r\n" L"rule PrimaryQuery QPrimaryAttributed"
L"\r\n" L"\t= !QPrimaryFragment with {attributeNameOption=\"Any\"}"
L"\r\n" L"\t= \"@\" [NAME : attributeName] \":\" !QPrimaryFragment with {attributeNameOption=\"Specified\"}"
L"\r\n" L"\t;"
L"\r\n" L""
L"\r\n" L"rule PrimaryQuery QPrimary"
L"\r\n" L"\t= (\"/\" with {childOption=\"Direct\"}) !QPrimaryAttributed"
L"\r\n" L"\t= (\"//\" with {childOption=\"Indirect\"}) !QPrimaryAttributed"
L"\r\n" L"\t= \"(\" !QueryRoot \")\""
L"\r\n" L"\t;"
L"\r\n" L""
L"\r\n" L"rule Query Query0"
L"\r\n" L"\t= !QPrimary"
L"\r\n" L"\t= Query0 : parent QPrimary : child as CascadeQuery;"
L"\r\n" L""
L"\r\n" L"rule Query Query1"
L"\r\n" L"\t= !Query0"
L"\r\n" L"\t= Query1 : first \"^\" Query0 : second as SetQuery with {op=\"ExclusiveOr\"}"
L"\r\n" L"\t= Query1 : first \"*\" Query0 : second as SetQuery with {op=\"Intersect\"}"
L"\r\n" L"\t;"
L"\r\n" L"\t"
L"\r\n" L"rule Query Query2"
L"\r\n" L"\t= !Query1"
L"\r\n" L"\t= Query2 : first \"+\" Query1 : second as SetQuery with {op=\"Union\"}"
L"\r\n" L"\t= Query2 : first \"-\" Query1 : second as SetQuery with {op=\"Substract\"}"
L"\r\n" L"\t;"
L"\r\n" L""
L"\r\n" L"rule Query QueryRoot"
L"\r\n" L"\t= !Query2"
L"\r\n" L"\t;"
;

		vl::WString GuiIqGetParserTextBuffer()
		{
			return parserTextBuffer;
		}

/***********************************************************************
SerializedTable
***********************************************************************/

const vint parserBufferLength = 6368; // 25801 bytes before compressing
const vint parserBufferBlock = 1024;
const vint parserBufferRemain = 224;
const vint parserBufferRows = 7;
const char* parserBuffer[] = {
"\x00\x00\x80\x84\x01\x8C\x01\x83\x20\x00\x61\x00\x33\x20\x03\x30\x84\x00\x32\x00\x65\x00\x11\x20\x05\x39\x88\x00\x72\x00\x39\x20\x0F\x7D\x8F\x7F\x82\x00\xD0\x18\x80\x09\x30\x01\x36\x87\x19\x9B\x94\x96\x82\x89\x94\x8E\x8F\x05\x01\xAB\x97\x8E\x96\x8F\x7E\x04\x01\xD3\x17\x94\x33\x8D\x88\x9A\x8D\x2F\x9D\x8B\x04\x86\x86\x87\x85\x86\x09\x90\x92\x93\x9D\x90\xA1\x98\x80\x0D\xE8\x24\x80\x0C\x37\x85\xA1\x8F\x45\x89\x87\xAE\x8A\xA5\x9C\x97\x91\x1B\x86\x01\x90\x38\x97\x8A\x36\x00\x3C\xB6\xA0\x80\x02\x91\x8D\x93\x93\x09\xAE\x8C\xA0\xB0\x05\x05\x81\x84\x3C\xBC\xAE\xA0\x02\x36\x9C\x9E\x89\x4E\x0E\xA7\x92\x8A\xB1\x81\xB7\xA9\x70\xF4\xB3\xAE\x93\x0F\xB8\xB5\xC7\x7B\xFD\x96\x9F\xB0\x01\xC1\x85\xC1\x00\x4F\x00\x04\xBC\x9D\x93\x36\x00\x67\x85\xE1\x83\x9F\xB5\xB2\x94\x9F\x4D\x9B\x83\xB0\xA0\x02\xA9\x93\xAA\x10\x9A\xDC\xD3\xAF\xC9\xD2\x8F\xB5\x87\xA5\xF1\xA0\xAB\xC0\xA2\xBA\x80\x19\x92\xA6\x3F\x92\x8F\xB1\x86\xC0\x82\x97\xA2\xCC\xB4\xD6\x92\xD2\xAF\x3F\x9B\xB8\x80\x8C\x9B\x8C\xB2\xE4\x97\xCA\xF7\xC6\xCD\xE1\xC6\xB8\xD4\x74\x8E\x01\x95\xEB\xCF\x8A\xCA\xE7\x12\xB2\xCF\xDE\xC0\xD7\xAB\xE8\x00\x3A\x92\xBC\x9D\xDB\x8F\xA4\x01\xE1\x25\x99\x8B\x89\xBE\x8F\xF5\xF9\xC7\xF4\x40\x02\x01\x40\x9F\x64\x56\x4E\x7F\x3B\x50\x79\x68\x00\x62\x40\x4B\x42\x44\x0D\x75\x66\x56\x4D\x11\x01\x4F\x09\x40\x15\x81\x4A\x85\x40\x36\x76\x4B\x84\x87\x1D\x9D\x4F\x84\x40\x21\xA2\x83\x89\x89\x37\x41\x49\x11\x65\x00\x04\x10\x03\x8A\x52\x00\x05\x10\x00\x07\x54\x10\x03\x40\x00\x57\x8A\x8C\x00\x17\x9A\x86\x4D\x83\x2D\xAF\x80\x01\x8C\x33\xB5\x82\x82\x85\x3C\x80\x01\x00\x88\x1D\x78\x8C\x89\x10\x00\x0D\x12\x8C\x00\x15\x01\x4B\x16\x43\x2D\x00\x0A\x1C\x00\x50\x99\x9A\x14\x00\x5F\x00\x0D\x14\x00\x57\x89\x49\x97\x96\x5D\x80\x0F\x94\x0C\x00\x19\x99\x0E\x98\x00\x2A\x07\x90\x89\xFD\x41\x47\x16\x90\x4C\x01\x97\x40\x94\x31\xAE\x83\x81\x8E\x71\x80\x03\x00\x93\xFF\x0E\x9A\x66\x48\x33\x81\x6F\x9D\x92\x28\x37\x84\xA2\x7D\x07\x79\x9A\x66\x4E\x33\x8B\xA7\x85\x0A\x00\x36\x76\x4F\xA0\x00\x58\x19\x67\x90\x73\x89\x9E\x14\x83\x84\x89\x0A\x88\x8B\x36\xB3\x81\x8C\xA5\x34\x80\x06\x8E\xA5\x81\x87\x0F\xA1\x40\x55\x2C\x8B\x8A\x66\x8A\x88\x9B\x08\x00\xEF\x76\x46\xA8\x40\x3A\x75\xA2\x10\x7C\xAE\xA0\xA0\x96\x91\x4B\x80\x49\x97\xAF\x57\x4C\xB0\x96\x8D\x36\xB1\x8B\x8B\xB0\xB5\xA9\xAA\x91\x40\x40\x00\x0A\x03\xAC\x00\x47\x4A\x66\xA4\x2C\x89\xB0\x02\x0E\x00\x2B\x67\x54\xA7\x41\x9A\x66\x8E\xB8\x2E\x00\x0B\x5A\x4D\xE2\xB6\x7A\x4E\x48\xC7\x93\x98\xBB\x85\x0B\x7B\xAF\x6F\x55\x3D\x80\x00\x06\x4C\xCC\x7B\x5E\x74\x50\x46\x23\x49\x43\x19\xE8\x6D\x7C\x4E\x06\x00\xF9\x6E\x73\x6E\x1B\x45\xC9\x47\xC1\x09\xE7\x5C\x4D\xBB\x31\x9F\x6F\x64\x4F\x3A\x7C\x4B\x6C\x4F\x55\x80\x49\xB4\x08\x00\x24\x00\x00\x0F\x3D\x4E\xC3\xC1\xC4\x06\xC0\x08\xC0\x66\x16\xC0\x0E\x0E\xBF\x0D\xDD\x7F\x72\xC4\x0E\x6F\xC6\x5B\x63\x16\x35\xC2\xC3\xCD\x2D\xFA\xC5\x73\x63\xED\x9D\xC5\x58\x4F\x14\x18\xB0\x00\xC9\x28\xD4\x4A\xC8\xD0\x13\xEE\xC5\xC7\x63\x33\xFF\xB0\x42\xD3\x36\xD0\xC0\x00\xCE\x14\xF0\xCF\x62\x04\x3E\xC8\x60\xD5\xCE\x53\xD7\xC0\x01\x0C\x00\x29\x21\x41\xD3\x01\xE2\xDA\xD4\xD7\x52\xDE\xDC\x4F\xCC\xE4\xA4\xCD\xA2\xDD\x4B\xCF\x91\x97\x94\x24\xF5\xDF\x62\x75\xE6\x49\x72\x44\xC9\x77\x13\x5C\x4E\x54\x24\xFB\x19\xDC\x79\xD7\x6C\x89\x75\x7A\xE5\x5D\x60\x02\x84\x24\xFD\x09\xDE\x08\xC4\x8D\xED\x41\x49\xF8\x57\x40\x44\xE6\x24\xFD\x19\xDC\xA6\x24\xFC\x19\xDF\xDD\x00\x18\xE2\x9C\xE8\x00\x05\xE5\x4B\xE1\x79\xCA\xE4\xC8\xE3\x81\xCF\xEF\xA7\x6C\xEC\x67\x55\xE7\xE5\x5C\xAD\x7B\x44\xEB\xA2\xE4\xC4\xE8\x00\x98\xA3\xC4\x98\xEF\xED\xAC\xE1\x60\x94\x52\xB3\x8D\xDD\xDE\xC1\x77\x74\x71\x7B\xC7\x4E\xE9\xC0\xC9\x63\xA4\xCA\x55\xDE\x4F\xDA\xD1\x82\xD5\x29\xD9\xD4\x5C\xDC\x42\xCA\xC0\x00\xD8\x57\xED\xDA\x6F\xF8\x41\xE5\xD0\x01\xBB\x32\x29\xDB\xD9\xF8\x3F\xEF\xDD\xFA\xDC\x32\xE3\xB7\xEB\xFE\x24\xCB\xFB\xDE\xF3\xFA\x73\x74\x50\x0D\x77\x3C\xCC\x04\x76\x70\xAD\x31\x77\xE2\x03\x85\x77\x84\x6A\x3A\x72\x94\x60\x02\xE5\x24\x68\x72\x9D\x1A\x73\x2A\x9D\x72\x23\xE7\x79\x61\x78\xE2\x79\x6E\x74\x78\x74\x81\xA0\x2C\x7E\x75\xC7\x08\x70\x00\xB2\x7F\x6D\x79\x58\x3E\x81\xC8\x74\x35\x3D\xBB\x62\x84\x94\x67\x2F\x76\x0E\xA3\x77\x86\xC6\x77\x4A\x08\xC9\x79\x6E\xFF\x4D\x79\x6F\x7E\x71\x7B\x70\x4D\x23\x69",
"\xEA\x45\x87\x22\xD8\x79\x6F\xF6\x24\x6D\x7A\xC5\x20\x3E\x25\xE0\x78\x69\xFD\x6C\x71\x6B\xF2\x71\x60\x7D\xF4\x6E\x6C\x15\xE4\x68\x7F\x76\x73\x02\x7E\x00\x2C\x6D\x13\xAE\x24\x7C\xF7\x74\x6C\x7F\x00\x08\x76\x0F\xFC\x61\x80\x15\x84\x82\x70\x79\x65\x84\xEC\x09\x7B\x80\xC0\x6C\x80\x33\x0F\x8F\x86\xEE\x12\x8C\x76\x0B\x97\x23\x73\xD2\x65\x26\x06\xA9\x76\x86\xE1\x5F\x80\x8D\xAA\x64\x93\x01\xAF\x79\x80\x3A\x82\x86\x8E\xD6\x78\x8E\x0B\xB9\x79\x6F\x09\x84\x93\x86\x40\x20\x7B\x0D\x86\x94\x64\x1D\x84\x94\x87\xC6\x6B\x8C\x00\xC1\x87\x23\x21\xA3\x25\x88\x0D\x86\x80\x9C\x5A\x7A\x20\xEE\x62\x7F\x3B\x5F\x30\x89\xD8\x6B\x74\x8D\xFB\x7B\x64\x27\x18\x13\x97\xC3\x5B\x8D\x6B\x5B\xAF\x78\x54\x1A\x6F\x33\x8C\x67\x20\x23\x90\x65\x67\x64\x59\x94\x94\xC1\x36\x93\x69\xB9\x79\x69\x5B\x58\x92\x8A\x16\xAE\x20\x4B\xBC\x0D\x3A\x32\x8F\x23\x91\xD2\x69\x73\x8C\xA0\x15\x98\x32\x53\x38\x98\x65\x10\x2D\x5D\x1A\x00\x03\x18\xF3\x72\x9A\x32\x9B\x2F\x9A\xBD\x21\x9E\x2F\x9E\x79\x7E\xDF\x18\x79\x5A\xD6\x5E\x92\x94\x40\x8A\x8B\x63\x6E\x95\x24\x71\xA9\x90\x89\xAB\x84\x90\xB9\x2C\x71\x05\x64\xBB\x95\x96\x55\x8E\x7E\xF1\x72\x8D\x90\x14\xBA\x9E\x9A\x91\x30\x9F\x1D\x97\x29\x8E\x4A\xB1\x84\x90\x7E\x90\x40\x06\xD3\x23\x90\x4D\xB6\x2B\x5B\x62\x8F\x96\x37\xFB\x97\x9A\x89\x96\x2F\x8C\x24\x65\xA2\x3A\x87\xAB\x99\x84\xB8\x7B\xA1\x08\x87\x85\x0A\xF8\x20\x9D\x7E\xA6\xA7\x88\x90\x78\x77\xE4\x30\x8C\x8E\x19\xBE\x72\x91\x00\x02\x75\x14\xEA\x7C\xA4\x96\x6E\xA6\x97\xD1\x84\xAB\xCA\x5B\x6C\x98\xF3\x65\x98\x8C\xC8\x8B\xA7\x52\xE5\x88\x7E\x94\xA9\x88\x8D\xF8\x8F\x7B\x23\xAB\x81\x92\x80\x8C\xA2\xA6\x75\x9C\xA8\x4E\xB7\x7B\x3D\x9D\xBB\x8E\x92\x15\x9C\xA8\x20\x99\x86\x2A\x4D\x9C\x90\x00\x20\x97\xAA\x08\xAB\x71\x8F\x98\x8A\x83\xAB\x6F\x96\x75\x45\xE6\xA5\x92\xDE\x58\x95\x86\xA1\x7B\x92\x07\x9D\x98\x78\xA0\x99\xAD\x8D\x42\x93\x7A\x71\x7F\x93\x71\x80\x8B\x8A\xA9\xCF\x21\x40\x34\xBA\x9B\xA9\x76\xA5\xA3\x32\xF1\x8C\x60\x37\xA2\xAC\x9C\x92\x91\xA0\xB3\x83\x98\x63\x4E\x9B\x63\x4A\x62\x80\x07\x02\x01\x26\x65\x48\xD3\x84\x9A\xCF\xAF\x98\xB4\x27\xAF\x98\xAF\x14\xBF\x39\x6D\x5B\xB4\xB5\x40\x3E\x88\x00\x36\x19\x9C\xC8\x9A\x6E\xAA\xA8\x78\x73\x85\x24\x86\xAE\x47\x8C\x21\x81\xAF\x36\x2B\x5E\x91\x88\xAD\x20\x79\x3F\x8F\x8F\x2E\xAF\x60\x80\x0A\xA4\xDF\xB4\x2E\xB2\x9F\xB9\x9A\x55\x59\x5F\xA3\xA8\x96\xBE\x25\x56\xB8\x71\xA3\x04\xAA\x40\xBA\x19\x63\xA7\x3C\x22\x84\xA6\x74\x95\x2E\x6D\x5E\xBD\x9B\x1B\x20\xB8\xEF\x3B\x44\xB8\x46\xA0\xAC\x64\x51\x33\x28\x6C\x64\xA0\x82\x9E\x8D\xBB\x45\xA6\xAF\xBA\x46\xBC\x22\xBB\xE1\x55\xB8\xBE\xBD\x70\xA3\x6B\xDA\xB0\x23\x6C\x6F\x3A\xAA\xCF\x23\xA8\x82\xA2\xB1\x98\x9E\x03\x9E\x2A\xFB\x4A\xB6\x41\xCB\xA3\x66\x92\x59\x58\x48\x01\x4C\x4F\x83\xCF\x80\x28\x36\x7A\xB4\x22\x61\x85\xBE\x4B\x6C\x46\xAB\x10\xF9\x9C\x64\x64\x3B\x35\x33\xF9\x60\xC2\xAD\x5A\xAF\xB8\xAE\x34\x2A\x55\x2C\x9B\x20\x92\x47\x23\x7B\x48\x36\x2B\x52\x24\xCB\x22\xEE\xAE\xBC\x6D\xB1\x85\xC6\x3C\xF9\x67\xC0\xCE\x80\x07\xC3\x00\x69\xCB\x46\x22\xC1\xCB\xE8\x00\x06\xC4\x00\x11\x7F\x0E\x3D\xB2\xCB\x2B\xCB\xCC\x64\x2E\xD7\xC5\x8C\xA7\x96\x7C\x30\xDF\xB8\x28\x37\xD9\xBD\x72\x90\x2C\xC7\xBC\x7F\xC5\x95\x41\xDD\x2A\x64\xA4\x59\x7D\x2E\xD4\xCD\xCE\x56\xD8\xC8\xDA\x5B\xC9\xC4\x17\xED\xC4\xC8\x5E\xC2\xCD\x59\x33\xC6\x79\x1A\xF4\x29\xCD\xC8\xBA\xC4\x9B\xC6\x2E\xCC\x46\xF1\xCF\x22\x01\x40\xC4\xA0\xEC\x42\x3C\x3C\xCB\x40\xCB\xE7\xA4\xB7\x85\x90\x26\x5C\x0D\xFE\xCA\xB6\x92\xDD\xC8\xDA\x23\xC2\xD5\x5F\xA8\x6E\x17\x5C\xD6\xC8\xDA\x56\xA5\xBA\x3B\xCF\xCD\xBD\x20\xAA\xC4\x50\x2B\xDD\x8D\x00\x68\x6F\xC6\x9D\x7A\x3F\x63\x22\x83\x54\xD6\x61\xCD\x8D\x0F\x47\xBA\x84\x0B\xDF\xB1\xFF\x33\x38\xD0\x8B\x86\x87\x5D\xBB\xA4\x2D\x8B\x98\x73\x46\x78\x07\xB9\x55\x16\x2B\x21\x92\x36\x0C\xA2\x23\x3A\x92\x91\xB1\xD6\xD7\x2F\xF2\xD3\x23\xB7\xCD\x8D\xAE\xAD\x99\xBC\x42\xB4\xAE\xCC\xAE\xD7\xC5\xB0\x91\x4D\x3C\x62\xED\x94\x64\xC6\xDF\xD9\x5D\xF6\xBB\xD9\x02\x7D\xAA\x84\x00\xDA\xBA\xAE\x83\xC0\xA8\xD1\x50\xCE\xD2\x74\x23\xD5\x95\x8B\x48\x6D\x76\x74\x00\x00\xAA\x09\xD4\xC1\xDE\xDD\xDA\x5C\xD3\x2A\xD7\xE5\xC9\x92\xAF\x93\xDF\xC5\x56\x9A\xA3\xD8\xFA\x9D\xC4\xB1\x72\x32\xDE\x98\xB4\xDE\xB8\xF6\xCE\xDA\x90\x31\x6D\x29\x75\xD1\xBE\x86\xDD\xA8\xCA\xAA\x8C\xE0\xD1\x70",
"\xFE\x6B\xDC\xFB\x3C\x75\xAF\xB4\xC4\xE2\x75\xD0\xB8\xE3\x6D\xD0\xDD\x82\x73\xC9\xD9\x39\x8E\xA4\x64\x21\xFD\xA4\x21\xD0\xD2\xDA\x9F\x15\xD8\x00\xD7\xD0\x71\x46\x1A\x93\xC4\x04\xF6\xB3\xC3\xCF\x2D\x5C\xDA\x15\x1D\xB6\x04\xF2\xBA\x84\xC3\xAF\xD5\xCF\x8D\xA9\x84\x35\xCA\xD4\xBF\x7A\x97\xDC\x21\xAE\x42\xC1\xE3\x84\xC5\x90\xD3\xAD\xC8\x6E\x9D\xBA\xC0\x9B\xB0\xB0\x22\x29\xF0\xEB\x6F\xED\x81\xB9\x24\x59\xEE\xE3\xCA\xC6\xBA\xD7\xFB\xBB\xB8\xFF\xBC\x71\xDF\x10\x25\xED\x43\x67\xE1\xB1\xB7\xAA\xEB\x9A\x23\xAD\xEC\x5F\x26\xA0\x23\xA6\xCE\xCF\xE9\x86\xCE\x24\xFC\x00\x0F\x03\xAA\xCE\xC9\xBC\x57\xAC\xBD\x4A\xF2\xD9\xD3\x5D\xC4\x93\xBD\x74\xD2\xDD\xFC\x24\xD6\xCB\xF8\x52\xE8\x00\xB8\x0A\xE0\x5D\x71\x7C\xD4\x79\xE8\x6B\xDB\xDE\xBD\xC8\xEB\xB5\xD0\xD1\xF8\x4E\xE7\xB9\x31\xE2\x85\x96\x13\xE5\xD4\x9B\xD7\xE5\xDD\x19\xF9\x6D\xBC\x81\x4B\xEB\xFB\x8C\xDA\xEC\x69\xB6\x21\x5F\x31\xE1\x6B\xC1\xFD\xDF\xD5\x71\xE1\x43\xEC\xFE\x62\xFB\x8A\xF0\xE6\xF3\x98\x7B\x54\xEF\xAB\xEE\xF6\x61\xC0\xF9\xE7\x1B\xE0\x40\xB2\xAD\x75\xB9\x9F\xC7\xFA\xE4\xB5\x47\x2C\x25\xDA\xD1\xF5\xEA\xE4\xF3\x41\xA6\xE0\x03\xC1\xA4\x1A\xF4\x97\x13\xFC\xE6\xB2\xF6\xFB\xC3\xE4\xDC\x77\xDD\xF8\xFC\xFB\xC0\x67\x73\xDF\x7C\x68\x3A\x7C\x71\x3C\x74\x7E\x1F\x76\x7E\x41\x7D\x5C\x3A\x1A\x7C\xFC\x7D\x7C\x27\x71\x58\xD1\x75\x7B\x2C\x79\x7F\xB7\x73\x12\xB9\x74\x48\xDA\x7F\x7F\x0B\x7D\x7D\xEC\x66\x5A\xE0\x73\x7C\x80\x68\x77\x3E\x79\x42\x0B\x8C\x3B\xE9\x71\x76\x9A\x41\x6A\x2B\x7F\x7E\x01\x7F\x4B\xF1\x39\x70\x7D\x6D\x72\x15\x80\x80\x2F\x7B\x7F\x31\x76\x3C\x98\x33\x73\xE8\x69\x67\x15\x76\x72\x38\x74\x80\xE1\x77\x6C\x5D\x65\x7C\xF5\x65\x1E\x22\x74\x74\x0D\x13\x6D\xAD\x46\x6D\xD8\x6B\x74\x28\x77\x64\xAE\x75\x83\x1D\x82\x6E\x38\x8F\x18\x3A\x83\x42\x1C\x84\x17\x6C\x2E\x81\x7C\x5E\x6E\x1A\x72\x82\x45\x88\x80\x79\x7A\x80\x48\x82\x74\x98\x39\x6F\x94\x1B\x6F\x66\x7F\x7C\x2C\x8B\x70\x95\x63\x85\x14\x68\x5E\xA5\x56\x15\x9D\x61\x7B\x2B\x7D\x61\xAF\x69\x54\x08\x68\x5D\x0B\x63\x4E\x00\x0B\x4D\x72\x77\x5D\xAE\x5E\x76\x0C\x66\x6A\x8F\x13\x83\x7D\x85\x88\x8B\x7F\x76\xDE\x6C\x5E\x9A\x77\x3C\xFD\x3D\x3B\x3F\x47\x63\x34\x5C\x4F\x8D\x8A\x5D\x63\x59\x44\x22\x43\x50\x4C\x63\x88\x08\x5C\x45\xBE\x46\x84\xC6\x57\x89\x97\x5A\x89\x70\x4D\x77\x67\x5D\x47\x6A\x5B\x51\x82\x4D\x56\x36\x4F\x86\xAB\x73\x5B\x00\x76\x7F\x30\x80\x00\xF4\x73\x83\xF9\x7F\x67\x16\x86\x85\xB8\x78\x85\xBC\x3B\x81\x3D\x85\x85\x7E\x30\x84\x03\x85\x6C\x3B\x73\x7E\x5F\x57\x84\xCD\x68\x86\x00\x09\x82\xEB\x71\x85\xDC\x64\x81\xBC\x85\x7A\xFA\x7F\x8B\x3C\x19\x85\xFE\x73\x8C\x2F\x8E\x85\x41\x88\x8C\x06\x8A\x8C\xE5\x76\x82\x67\x8C\x80\x3E\x1B\x7C\xE0\x49\x10\xCE\x7B\x82\x03\x73\x8B\x71\x85\x7D\x73\x8A\x69\xC0\x77\x87\x2A\x70\x7F\xF9\x3E\x61\x00\x0C\x2C\x01\x2D\x79\x3C\x16\x2E\xFB\x83\x5A\x44\x37\x36\x54\x25\x7F\x40\x1C\x8F\xDE\x6D\x6A\xD6\x8F\x6F\x53\x8E\x82\x2E\x15\x70\x00\x0F\x45\x32\x88\x87\x0B\x75\x8D\xC4\x89\x37\xD7\x71\x71\x00\x03\x73\x85\x65\x73\x01\x8F\x7B\x20\x82\x84\x62\x86\x65\xA4\x86\x86\xCD\x8D\x5C\x4A\x8A\x63\xD4\x63\x15\x49\x7F\x29\x50\x82\x81\x52\x8D\x6D\x14\x9D\x8D\xBE\x88\x81\xD8\x7A\x85\x1B\x99\x6E\x1D\x9E\x7D\x1F\x90\x8E\xE2\x73\x86\xCB\x80\x72\xE5\x8F\x77\xE6\x35\x72\xD0\x54\x78\x41\x57\x3E\xB4\x5A\x35\x7E\x86\x88\x80\x82\x88\x91\x79\x78\x35\x59\x89\x80\x86\x70\x89\x8F\x5E\x4E\x6B\x94\x52\x91\x4F\x98\x75\x4F\x79\x37\x4F\x94\x8C\x46\x7E\x36\x8A\xD9\x54\x19\x9B\x81\x50\x98\x3E\x89\xC6\x37\x78\xEB\x4C\x54\x47\x53\x63\x23\x93\x53\x8C\x8E\x4F\x13\x59\x53\x65\x5C\x5C\xAC\x87\x41\x9C\x3C\x51\xB0\x81\x58\x7C\x87\x95\x71\x9C\x78\x81\x89\x94\x84\x8A\x78\x72\x96\x15\xBA\x5C\x13\x8A\x8E\x97\x84\x90\x98\x5B\x90\x54\x5E\x9C\x3C\x60\x9F\x50\x51\x95\x98\x65\x93\x26\x59\x8E\x89\x9B\x7F\x94\x46\x52\x8A\x6E\x94\x86\x25\x82\x99\x98\x84\x99\xA9\x83\x49\x7C\x52\x72\x19\x57\x5C\x79\x9F\x8A\x1B\x41\x58\xB2\x86\x8B\x0C\x90\x14\xF1\x7F\x45\xB9\x82\x91\xB3\x81\x93\xB6\x87\x81\x10\x71\x8C\x84\x47\x93\x36\x89\x37\xC6\x8B\x93\xEF\x63\x84\xF2\x6F\x96\x79\x37\x82\x22\x40\x8D\x7C\x5E\x51\x2F\x94\x8D\xB4\x7D\x8B\x37\x88\x8D\xFD\x7B\x9B\x5B\x8D\x90\x3F\x82\x80\xC0\x91\x86\xC9\x8E\x93\xE3\x85\x9C\x41\x92\x42\x0D\x8B\x78\xCC\x7E\x10\xEB\x86\x43\x8E\x7B\x76\xEE\x57\x5B\x88\x7B\x11",
"\x54\x95\x79\x89\x96\x9E\x98\x73\x5E\x9F\x8F\x8F\x15\x6A\x75\x9F\x74\x48\xFA\x80\x68\x06\x99\x21\x9C\x70\x90\x66\x36\x90\x9B\x60\x00\x71\x8E\x69\xF8\x9C\x9F\xF7\x8B\x87\x82\x9D\x5A\x8B\x9E\x88\x1C\x07\xA0\x50\x91\x9A\x80\x91\x8F\x8F\x16\x34\x1F\x37\x5A\x4A\x34\x32\x02\xAB\x88\x09\xA7\x88\x33\x3D\x97\xE6\x98\x95\x85\x90\x11\xB9\x48\x9E\x6B\x9E\xA1\x0F\xA4\x2C\x1E\x33\x12\x3C\x1D\x33\x22\x39\x37\xAB\x59\x9E\x09\x63\x99\x8C\x94\x8B\xA0\x80\x14\x1C\xAE\xA2\x10\xAC\x31\x8F\x13\xA1\xFB\x26\x3C\x17\xA7\x79\x32\xAA\x99\x00\xAC\xA0\xEA\x96\xA2\x47\x3E\x2E\x15\xA6\x95\xEE\x9D\x7E\x14\x73\x54\xAE\x67\xA3\x44\xA3\xA1\xE6\x2C\xA3\xB4\x9B\x62\xF9\x3D\x9A\x4A\x6B\x16\x2E\x65\x34\x39\xA8\xA2\xE7\x94\x9F\xF5\x8C\x85\x55\xAD\x8E\xB6\x8C\xA4\xD6\x8E\xA4\x12\xAC\xA5\x51\xA9\x37\x02\xAB\x8B\x4A\xA9\x7F\x58\xA4\x81\x5A\xA7\xA2\x19\x1C\x13\x4F\x76\x3C\x5F\xA6\x8B\x33\x36\xA5\xE0\x64\x33\xB5\x83\x6B\xBF\x46\x90\x67\xA3\xA7\xE5\x27\xA4\x6B\xA9\x87\x6D\xAB\x72\x6F\xA5\x6A\x71\xA5\xA4\x75\xAC\xA2\x53\x83\x33\xF7\x9D\x65\x06\x9D\x18\x7D\xAB\x11\x06\x96\xA6\x5B\xA2\xA8\x71\x82\xA5\x77\xA5\x90\x04\xA0\xA9\x62\xAE\xA9\xF3\x9F\x00\xA1\xA6\xA9\x04\xAB\xA8\x3A\xA7\xA4\x9D\xA6\xAA\xF3\x95\x35\x42\xAC\x96\x9C\x96\x3E\x35\xAB\x96\x54\x5E\x4B\x54\x9A\x36\xED\x9E\xA2\xB5\xA3\x63\x57\x72\x57\x7A\x35\x89\x6D\x44\x3B\x73\x93\x6F\x65\x89\x42\xC2\xAD\x55\x74\x9D\x5F\xAB\x8E\x9D\xAD\x89\x9A\xF1\x45\x60\x87\x41\x42\xE6\x60\x54\x3F\x96\x7E\xC7\xA3\x56\xAA\x88\x7C\xBD\x34\x43\xCF\x7F\x56\xC3\x3E\x49\x98\x3C\x43\x93\x80\x99\xA3\x40\x3D\xA5\x4A\x58\xC7\x53\xAC\x9C\x82\x84\x08\x63\x67\xB3\xA5\x54\x2F\xAE\xA0\x8E\x8E\x94\x67\x6C\x76\x30\xAE\x88\x93\x78\x4E\xB9\xA3\xA2\x7F\x9E\x88\xAD\x70\xA4\xBB\xA5\x66\x9E\x9C\x75\xA0\x97\x8A\x64\x93\x9A\x3A\x56\x97\x3E\x5C\xAD\xEC\x73\x81\x18\xA7\xAF\x1A\xAD\x46\x90\x8D\x95\x3D\x4F\x95\xE5\xAC\x4A\x19\xA7\xB0\xB6\x3B\xAE\x67\x90\x54\x6A\x90\xAF\x01\xB1\x33\xC4\x98\xB1\x10\xBA\xB1\x2D\x49\xB0\x7E\x7C\xAC\x78\x91\x48\xCF\xA6\x43\xD9\x22\x2B\x00\x12\x61\x4E\x61\xB2\x8F\x18\x1B\x4E\x61\x20\x23\x27\x15\xEF\xA5\x59\xFD\xA7\x88\x36\xB6\x9E\x38\xB1\x10\x05\x54\x27\x1D\x15\x9E\x2E\xAF\xB3\x2E\xA1\xB4\x00\x13\x02\x84\x2A\xA7\x5E\x66\x1F\x4A\xB0\x00\x25\x0D\xB4\xA5\xA9\x65\x99\x25\xB5\x1A\x27\x02\x54\xB5\xA9\x02\x90\xB5\x80\x6A\x21\x98\x24\xB4\xFF\x01\xA9\x56\x66\x90\x5E\xBD\x65\x1A\x2B\x2B\x62\xBF\x01\x9C\x2F\x0F\xE2\x2F\x0F\x1A\x22\x2E\x39\xB3\xB7\x74\xB7\x22\x6F\xB0\x24\x8B\x29\xB3\xE2\x22\xB7\x01\x1F\x1E\xD7\xA0\x47\x1A\x22\xB3\xE6\x94\xB3\x69\x1F\xB6\x30\xB2\x28\x75\xB9\xB8\x24\x2F\xB6\xF1\x25\xB7\x79\xB3\x22\x48\xBB\x96\x51\xB2\xB8\xBA\xAD\x54\x31\x3E\x24\x1A\x21\x87\x7F\xBA\x57\xA4\x92\x21\xCC\x27\x9A\x6B\x5A\x97\x10\x14\xB9\xB4\xA6\xB9\x8F\x1F\x0F\x8B\x28\xBA\x01\x10\x24\xCC\x2E\xB6\x01\x1C\x2C\xAD\xB2\x2E\x6B\x1E\x01\x1C\x22\x2E\xFB\x24\xBB\x8B\xB1\x10\x87\xBB\x01\xB5\xB1\x10\x4F\x7C\xBB\xB9\xB0\x10\xE2\x2A\xA2\x1C\x12\x2E\x4E\x2A\x9F\xAE\xB0\x10\xF6\x18\xBC\xE2\x2F\x1E\x58\x42\x2E\x98\x3A\xBC\x75\xB1\xB9\xF0\xA3\xB9\xAF\xA4\xB8\x8E\x2F\x21\x9A\xBC\x40\xC3\xA9\xAD\x9F\xBD\xAC\x2C\xB3\x48\xA4\xB0\xB2\xA6\xBC\x13\x40\x21\xBD\x73\xB3\xBE\x53\x55\xBE\x88\xBA\xB8\x48\x92\xA2\xF0\xA4\xA2\x8E\x88\xB9\x01\x14\xA9\x0E\x19\xB1\x8C\x50\x76\x94\x48\x2E\x7F\x5F\xBE\x33\xA6\xAF\xF2\xA7\x88\xAA\xB0\x10\xAC\xBD\xBB\xC2\xB1\x10\x19\x06\xC0\x00\x0B\xBB\x0A\xCF\xBB\x0A\xC7\xBB\x0A\xC0\xBB\x0A\xC3\xBB\x0A\xC7\xBC\x0A\xCB\xBC\x0A\xCE\xBC\x01\x12\x2E\x0B\xA2\xBD\x74\xB4\xBD\x4B\x56\xBD\xF0\xBB\xBE\x6D\x96\x3E\xF4\xB0\x10\xDB\xB0\x49\xD8\xAD\xB9\xED\x1F\xBD\x2B\xBC\x56\xA3\xB7\xBD\xEC\xB0\x24\x1D\xC9\xBE\x32\xC5\xC2\x31\x38\x2E\x89\xBB\xB3\xCF\x12\xBF\x87\x87\xC2\x00\x06\xBF\x62\x9F\x87\xF9\xBE\xBD\x39\x10\xBE\x30\xCE\xBF\x40\xAE\xC3\x80\x8A\xB8\xC9\xBC\x11\xE0\x3E\x24\x8C\xBB\xBA\xBA\xB3\x22\xC6\xB3\x22\x29\xC2\x56\x08\xB5\x97\x2D\xC7\xC4\x2F\xC2\xBA\x7C\xAF\xBF\xB0\xAD\x4B\x33\x65\xBC\x17\xCE\xB8\xD3\xBC\x1D\x40\xBF\xB5\x01\x1A\xBE\x63\x34\xC6\x26\xC8\xC5\xE3\x1C\xBD\xC8\xAA\xBF\x7C\x5C\xBF\x3F\x5E\xC6\xF6\x38\xC3\xA7\xB9\xBA\x8B\x25\xC0\xC1\xB7\x2D\x00\x19\xC0\x81\xC2\xC1\x81\xC4\xC1\x81\xC0\xC1\x81\xCC\xC0\x81\xCE\xC0\x81\xC6\xC1\x81\xC8\xC1\x81\xCA\xC1\x07",
"\xC0\x10\xE8\xB6\x1F\x39\xB0\xC2\x91\x5C\xC6\x31\xB7\xC3\xB1\xA7\xB9\x72\xC4\x1D\x74\xCB\xC2\x28\xB7\x16\x78\xCC\xAD\x7A\xCC\x4B\x71\x3E\x4B\xE7\xB5\xB7\xA9\xC1\x8A\x70\xC9\xC3\xEE\xBA\xC4\xF5\xA1\xAF\x06\xB1\x4F\x40\xC2\xC4\x3D\xB6\xB2\x92\x45\xCA\xED\xBB\xAD\x34\xAF\xAA\x4C\xC1\x4F\x03\xC1\x7A\xB1\xBB\xC1\x01\x14\x32\x85\xCF\xBA\x13\xC1\x10\xB8\xB6\xC6\x00\x14\xC9\xD0\xCD\x5E\x00\x1F\xCC\x4F\xCC\xC8\xD3\xCE\xC8\xD3\xC0\xC9\xD3\xC2\xC9\x82\xC0\x00\x35\xC8\xC9\x90\xBA\xC6\x49\xBC\xC9\x61\xC0\xB0\xEC\xB0\xC4\x59\xC9\x57\x27\xBC\xC5\xA6\xC1\x10\xFD\xBF\xCA\x2D\x5F\xC9\x8F\x14\xC3\xAE\xCE\xC9\xB1\xCF\x18\x3A\xC5\xB7\x3C\xCA\x94\xBB\xC8\xCB\x23\x2A\xCB\xF8\xBD\xBD\x2C\xC7\x16\x2E\xC0\x5D\xCE\xA3\x48\xFD\xC3\x98\x25\xB1\x4F\x4E\xCF\xB6\x51\xC8\xCC\x81\xC0\x24\x87\xB1\xB7\x01\x1A\xCE\x73\xCA\xC2\x5B\xCA\xAC\xBF\xC1\xCF\xF8\xCB\xCA\x65\xCB\x21\x4F\xCF\x0F\x14\xD5\xB7\x7B\xB3\x22\xFB\x29\x58\x44\x44\x3D\xF9\xB1\xB8\x1F\xD6\x45\x55\x93\xCB\x75\xB3\xD2\xCD\xB3\xCB\x23\xDB\x28\xCC\x26\xD1\x00\x1A\x9F\x7F\xC8\x21\xFC\xC2\xCC\xFF\xC3\x48\xFB\xC4\xB7\x46\xBB\x96\x36\xD3\xC5\x1E\xC3\xB7\x7C\xBF\x21\x9A\xCE\x3D\xE6\xC2\xCF\x9B\x99\xCF\x69\x1E\xC7\x54\xCF\x21\xD0\xB7\xD1\x69\xC3\x1A\x6B\xC8\xB6\x6D\xCF\xD2\xEE\x3D\xCA\x74\xB0\xD5\x63\xC0\xD2\xE6\x33\xD4\x73\xBB\xD0\x08\xAD\xD0\x83\x49\xCB\x8E\x13\xD0\x75\xC9\xAD\xA7\xC1\xCC\x23\xCD\xC3\x41\xD3\x21\x3D\xD6\xD5\x01\x15\xC3\x40\xCA\x21\x4D\xDE\x44\x5C\xDD\xC9\x73\xDB\xC7\xF4\xC6\xBE\x79\xD7\xCF\x81\xDA\xCA\x30\xDC\x13\x66\xD9\xB3\x68\xDD\xA0\xB7\xCB\xD6\x01\xDD\xD6\x6A\xDF\xD6\x05\xD9\x8F\x5E\xC8\xD0\xE1\xB6\x15\x8D\xD0\xC0\x8F\xD6\x15\x32\xD2\xD3\x34\xDE\xBB\x36\xD4\xD5\x00\x16\x2E\x3A\xD0\x00\x26\x01\x10\x77\xD8\xDA\x75\xB5\xD4\xF0\xAB\xD8\x23\x2E\xB4\x6C\x25\xCC\x6B\x17\xDA\xFB\x2B\xDA\xFB\x29\xB3\xAE\xDB\x54\x4B\xD7\xB5\xAC\x19\x63\xFB\x5A\x21\xB2\xDF\xD9\xA0\xD8\xD4\x41\xAE\xBE\xC5\xC5\xCC\xA4\xA4\xC0\x0A\xC2\x2E\x84\xC3\xCD\x86\xC3\xCD\x88\xC3\xCD\x8A\xC3\xCD\xD8\xCF\xC4\xDA\xC2\x2E\x72\x20\x10\xAB\xDB\xDD\x73\xB3\xDC\xB0\xDF\x21\x4E\xB8\x36\xC5\xC0\x3E\x40\x2F\xC4\xE2\x2A\xCC\xD0\xDC\xCC\x87\xCE\xCC\x0F\xCE\xDE\x8B\xC1\x10\xC0\xB9\xCD\xF2\xD2\xD1\x00\x03\xDF\xAB\xD3\xDF\x39\xB3\xDC\xBD\xD0\x24\xBF\x9E\xD9\x55\xD3\x85\x23\xD8\x2E\xFB\x28\x2E\x4F\xCC\xCD\x4F\xCE\xCD\x4F\xC2\xCD\x1A\x2B\x28\x87\xB9\xDA\x74\xBC\xDF\xB1\xD3\x16\x83\x66\x3E\xC2\xD5\xB5\x6C\x28\xDC\xC6\xD1\x87\x7A\xB9\xD5\xAD\x20\x64\x5C\x10\x69\xE6\xC3\xDC\xC9\xDB\x28\xCB\xD1\x7A\xE8\xD8\xC0\x11\xCC\xDE\xD2\xD0\xDF\xD4\xDE\xE2\xD7\xC5\xDF\x8D\xC2\xE3\xDF\xCE\xDD\xE1\xD6\xA4\xDD\x2E\x68\x21\xE3\x64\x7F\xD7\xA8\x97\x61\x7A\xDE\xDB\xDF\x18\xEF\xCB\x89\xB3\xDE\x1C\x1B\x28\xE6\xDD\xDC\x01\x14\xBC\x4F\xC1\xDD\x4F\xC3\xDD\x4F\xC5\xDD\x31\xE0\x10\xF3\xD8\xDD\x34\xE2\x2E\xF3\xD7\xE3\x6B\x1F\x66\x5B\x19\x14\x22\xED\xE3\xC3\xD0\x24\xFA\xD3\xE1\x5C\xBC\x26\xFD\xD1\x10\xFF\xD0\x11\x17\xEC\xB5\xE4\xDF\xB6\x04\xE1\x10\x06\xE5\xD3\x00\x18\x45\x07\xEE\xD3\x91\xC6\xE7\x1B\x2A\xE5\x59\x10\x67\x3B\xE2\x6F\x6B\xE2\x6F\x6C\x2F\xE0\x75\xB2\xE1\xE2\xD4\xE1\x32\x66\xE1\x01\xEE\x62\x9F\xD3\xD2\xDC\xC9\xB3\x8B\x26\x1F\xB9\xD4\xE6\x80\xE9\xBD\x1B\x26\x2E\x7B\x7A\x5C\x95\xDF\x1E\x80\x7B\x7F\xFC\x6B\xDB\xCF\x13\xD2\xDE\xCE\xE8\x01\x10\xE9\x83\xE3\xE4\x40\xC6\xE9\x89\x6C\x77\x95\xD0\x24\x64\x74\x66\xCE\x7E\xE9\x5A\x31\xC8\x29\x23\xE7\x26\xD3\xEA\x01\x11\xE9\x85\xE5\xE6\xC4\xD3\xB7\xA1\xD0\x10\xC4\xB9\xB8\x25\xE5\xBF\x58\xD1\xC8\xCE\xDB\xE2\x00\x17\xCC\x00\x10\xE5\xB6\xBE\xE2\xE2\x2D\x28\xDC\xD1\xE0\xCE\xEF\xDD\x55\xB8\x36\x37\xEF\xE7\xD5\x75\xCC\x82\x8E\x24\x29\xE0\x10\xEA\xDD\xE4\x2C\xEF\xE4\x30\xEB\xEC\xD5\xC6\xDF\xCF\xCB\xDA\xCF\xC2\xE4\x6C\xEF\xCD\x7F\xE9\xE6\x1B\x2E\xB4\xF1\x33\xE0\x01\x16\x4C\xA9\xB2\x2E\xD7\xD2\x2E\xDA\xCD\xE0\x55\xC0\x10\x41\xE2\xE9\xDD\x6D\xDB\xF6\x17\x91\xED\xE3\xED\x47\xDA\xC0\xBF\xE3\xD3\xA4\xD1\xC4\xC3\xE3\xCD\xC5\xEB\xCC\xC7\xED\xCC\xE3\xE9\xC8\xCC\xE1\x10\xD1\xEB\xDA\xD1\xE8\xEE\x53\x85\xED\x89\xE4\x81\xD8\xE9\xF0\xDB\xE0\x00\xCF\xDE\xED\x0D\xFD\xDE\x0F\xFF\xE2\x23\xF2\x2E\xE5\xE1\xE0\xE7\xEC\xEF\x34\x87\xE6\x0E\x26\x9D\x00\xEC\xDC\x5C\xBF\xEE\x6E\xE1\xEF\xAA\xDA\xC0\xF5\xE2\xDA\x54\xE3\x22\x0E\xE1\x10\xFB\xE9\xEB\x53\x8E",
"\xEF\x01\x10\xF0\xD6\xE4\x83\xBB\xE3\xD2\x78\xB5\xB7\xE8\x21\xEA\x23\x20\xEB\x74\x16\x1F\xE8\xBC\xD8\x40\xDE\xD6\x10\x1D\xDB\x7E\xB3\xCA\x80\xBD\xD5\x87\xD0\xCB\x64\xD1\x33\x23\xD7\xB8\x37\xEF\xE8\x78\xEA\xDB\xAF\xAE\xF4\x3F\xD9\xF5\x8E\xD3\x96\x0E\xD2\xD2\x6F\xB1\x87\xA8\x54\xB7\x8D\xBB\xD3\xAD\xDF\xAA\x1F\x2C\xE8\x61\xF2\xE9\xF6\x18\x45\x62\xF6\xF6\xF5\x11\x10\x2C\x05\xB7\x64\xBB\x20\x66\xB2\xF1\xA5\xE1\xF3\xBE\xD1\x28\x11\xE2\xF0\xF6\x10\xE1\xD2\xEA\xEB\xA7\xE1\x10\x97\xE1\x1B\x99\xE7\x2A\x01\x6E\xEA\x8F\x1C\xF4\x35\x1F\xB6\x4A\xFE\xF3\x77\xF1\xF7\x7A\xF5\xF8\x7D\xF4\xB7\x7F\xF6\x5E\x04\xA6\x1F\x15\xFA\xF2\xF9\x76\x1F\x3D\xF1\xF0\xE9\xE9\xF8\x83\xF3\xE9\x8D\xFF\xDB\xFA\x58\xE9\xBE\xCC\xEA\x9C\xED\x86\x96\xF0\x14\xB2\xEC\xE0\x23\x26\x1F\x9B\xF4\xD4\x63\xFC\xF7\x7E\xF5\xB5\x81\xF0\x10\xA5\xFE\xF3\xD5\x78\xFA\xAD\xFD\x6D\xAC\xF7\xF8\xBA\xEC\xEB\xC6\xDF\xDC\xC0\xEF\xB6\x8B\x2A\x59\xA1\x2D\xF1\xDD\xE2\x2E\xD1\xD2\x2E\x9F\xF1\x2A\x40\x2B\xFD\x16\xF5\x7D\x18\xF1\xF2\xFB\x93\x9F\xF0\xE0\x10\x21\xA5\xFD\xB2\xB1\xEE\xB7\xEE\xE2\xF8\xE0\x10\x87\xB5\xFC\xAA\xF2\x7A\xEA\xE6\xEB\x00\x12\xF4\x19\xF9\x7F\x1A\xEA\xC0\xD0\xF3\xD3\xD2\xF1\x10\xD4\xF3\xEF\xF6\x6F\xFA\x6C\x70\x66\x1A\xFD\x35\x78\xCC\x60\x00\xDE\x7E\xF4\x56\x47\xF0\x76\xD9\x5C\x5A\x41\x45\x7F\x00\x07\xFC\x40\x81\x64\x7A\xFE\x00\x09\x75\x6D\x7F\x0B\x62\xF0\x4C\x7E\xF9\x70\xF4\x75\x7F\x15\x48\x4C\xF7\x7E\x1A\x7B\x75\x69\x6F\x0F\x58\x66\xA8\x7E\x7D\xC0\x11\x3B\x56\x33\xA1\x75\x6A\x40\x63\xA2\x16\x37\xCC\x12\x0D\x7F\x08\x93\x34\xD8\x69\x76\xAC\x77\x77\x3A\x7C\xF3\x42\x4F\xA8\x56\xE4\x2E\x80\x81\x05\x0F\xE6\x17\x24\x4C\x43\xA3\x3B\x92\x1A\x0D\x46\x06\x72\x23\x86\xF9\x5C\x10\x20\x1D\x01\x35\x75\x25\x7B\x10\xFB\x13\x88\x4C\x4B\x96\x61\x10\x1B\x6E\x2D\x68\x7B\x83\x21\x67\x63\x69\x13\x75\xC3\x49\x82\x8F\x0F\x5B\xD3\x6F\x04\xB3\x5A\x04\x11\x8E\x60\x71\xD5\x51\x1F\x3E\x80\x20\x36\x36\xFB\x08\x9C\x12\x12\xBB\x64\x81\x17\x81\x07\xA8\x81\x1D\x83\xE2\x67\x80\xA5\x78\x80\x30\x87\x88\x4E\x41\xF0\x4A\x8E\x75\x66\x1D\x89\x82\xBD\x71\x6F\x39\x7E\x12\x1B\x28\x6C\x4F\x86\x02\x17\x58\x23\xB5\x78\x7B\x11\x11\xFA\x2E\x0A\x41\x4C\x80\xB7\x7B\x23\x04\x6E\xBA\x70\xF7\x74\x59\xD2\x74\x71\xDF\x7C\x06\x4B\x7F\xC5\x7E\xFA\x23\x10\xAA\x60\x6E\xB2\x7E\x9D\x72\x51\x4D\x72\x78\x15\x7F\xAB\x40\x75\x75\x7F\x43\x17\x85\x9C\x7B\x01\xCA\x7D\x40\x0A\x7C\x99\x86\xD5\x2F\x7C\x1C\x31\xFB\x10\x7F\xEC\x61\x08\xAD\x71\x7A\x2F\x74\xB9\x74\x02\xBA\x7F\x87\x00\x7B\xAC\x84\x13\xAE\x84\x80\x00\x0B\x8A\x83\x8F\x63\x84\x1C\x0F\xE8\x74\x5A\x60\x80\xCE\x65\x7A\x18\x63\x66\x83\x24\xEA\x59\x68\x2D\x66\x3B\x2E\x69\xE7\x78\x5E\x5D\x78\xCE\x4E\x83\xC2\x7D\x05\xA3\x12\x15\x90\x86\x2F\x78\x10\xAF\x5A\x2E\x83\x02\x94\x84\x00\x1A\x4F\x39\x5E\x49\x36\x0F\x94\x76\xFC\x14\x40\xF2\x6D\x85\x9A\x87\x15\x89\x7E\x8A\x33\x0B\x8F\x7E\x1D\x72\x10\x9A\x70\xF8\x25\x84\x9E\x01\x09\xA4\x81\xE6\x7B\x10\xEA\x84\xFD\x46\x87\x59\x4F\x0E\xC2\x85\x3C\x84\x86\xF3\x82\x16\x9E\x84\xC7\x79\xEA\x21\x84\x47\x74\x7D\xFB\x87\x47\x75\x65\xDC\x75\x05\xC8\x78\xFD\x60\x00\xEC\x81\xFE\x47\x7E\x9E\x79\x10\xAB\x3B\x26\x91\x85\x3E\x43\xD1\x6F\x5B\xE8\x6E\x05\xC8\x84\xDC\x41\x08\x4F\x7D\x24\xB4\x5A\xA3\x76\x00\xF3\x58\x33\x89\x89\x1F\x17\x1B\xB5\x6B\xA9\x7B\xF4\x53\x84\x3B\x78\x0C\xD6\x82\x8C\x58\x86\xC3\x5A\x0D\xEE\x7B\x45\x90\x89\x1B\x12\x26\x92\x7A\xBB\x5C\x21\x6C\x7A\x48\x9C\x10\x1A\x16\x64\x2A\x89\x95\x8F\xB6\x0D\x76\x15\x69\x78\x1A\x17\x13\xB5\x85\x7B\x8D\x1E\x79\x87\xE4\x7A\x85\xA6\x85\xF3\x68\x85\x4A\x8A\xD4\x50\x89\x40\x12\x8A\x6B\x34\x2A\xA7\x0A\x88\x84\xF9\x7C\x84\x2F\x83\x69\xBE\x87\x28\xA4\x10\x0D\x15\x0C\xCB\x8A\xDA\x7C\x10\x4E\x8F\x17\x97\x89\xB6\x8A\x11\xF4\x87\x42\x90\x7D\x61\x89\x5B\x56\x8A\xAB\x01\x11\xFD\x87\x56\x87\x87\x68\x61\xA9\x74\x8A\x16\x8E\x83\x75\x85\x43\x96\x85\xA2\x84\x2C\x98\x8A\xB3\x8D\xF9\x14\x88\xAD\x7E\x89\x82\x8D\x23\x87\x86\xA2\x8B\x16\x9A\x82\x5B\x94\x8C\x1C\x09\x2E\x80\x89\x8B\x80\xFF\x04\x8E\x3D\x45\x88\x20\x8B\xE1\x1F\x89\x81\x84\xA5\x06\x8C\x28\x88\x8C\x1C\x6B\x2F\x81\x3D\xB2\x82\x11\x88\x33\x5F\x88\x87\x23\x11\x20\x84\x7E\xC9\x84\x10\x9C\x88\x3C\x85\x35\xA3\x8D\x1D\x8A\x89\x0F\x10\x16\xDF\x39\xB6\x4A\x8C\x45\x4D\x35\x8E\x32\xC7\x8E",
"\xBF\x39\x5B\x2A\x97\x2A\xB7\x8E\x1A\x60\x8C\xD2\x8E\xA7\x39\x8D\x5D\x8E\x35\x5A\x87\x6D\x5A\x11\xD4\x77\x19\xA4\x82\x66\x9A\x10\xC7\x8C\x3A\xA1\x80\xD1\x82\x0F\xC9\x8F\x8F\x66\x8D\x53\x8A\x2F\x92\x7C\xBE\x8C\x1A\xFE\x88\xE6\x69\x85\x79\x77\x22\x9A\x8F\x03\x83\x0C\xAC\x6E\x77\x80\x53\xE0\x89\x2F\xAB\x74\x5C\x85\xFB\x3B\x85\x63\x9D\x85\x15\x8B\x19\xAA\x8E\xDA\x84\x9D\x4E\x8E\x67\x80\x53\xD1\x88\x29\x80\x7F\xEA\x83\xF7\x4D\x88\x7A\x9A\x10\xBC\x7B\x40\xB3\x5B\x46\x82\xAA\x74\x40\xE9\x7C\x8F\xB0\x4D\xF0\x6B\x8E\x1F\x7F\x82\x7E\x8F\x76\x90\x8F\x77\x8C\x16\xB2\x8E\x5F\x6A\x1A\xF5\x8D\x56\x82\x63\xAF\x8D\x6E\x49\x90\x80\x09\x00\x9F\x10\x83\x8C\x55\x0E\x96\x32\xA1\x8D\xDA\x8A\xEF\x10\x93\x9E\x56\x90\xEC\x8E\x2E\xBC\x8C\x86\x87\x1A\xE2\x89\xE8\x39\x85\xC1\x8D\x1F\x84\x8F\x45\x8F\x21\x32\x8C\x02\x81\x7E\x0E\x83\xF4\x6A\x90\xE6\x8B\x11\x71\x1F\x72\x9A\x8D\x1E\x8D\x3B\x86\x88\xE8\x84\x20\x89\x5C",
};

		void GuiIqGetParserBuffer(vl::stream::MemoryStream& stream)
		{
			vl::stream::MemoryStream compressedStream;
			for (vint i = 0; i < parserBufferRows; i++)
			{
				vint size = i == parserBufferRows - 1 ? parserBufferRemain : parserBufferBlock;
				compressedStream.Write((void*)parserBuffer[i], size);
			}
			compressedStream.SeekFromBegin(0);
			vl::stream::LzwDecoder decoder;
			vl::stream::DecoderStream decoderStream(compressedStream, decoder);
			vl::collections::Array<vl::vuint8_t> buffer(65536);
			while (true)
			{
				vl::vint size = decoderStream.Read(&buffer[0], 65536);
				if (size == 0) break;
				stream.Write(&buffer[0], size);
			}
			stream.SeekFromBegin(0);
		}
/***********************************************************************
Unescaping Function Foward Declarations
***********************************************************************/

/***********************************************************************
Parsing Tree Conversion Driver Implementation
***********************************************************************/

		class GuiIqTreeConverter : public vl::parsing::ParsingTreeConverter
		{
		public:
			using vl::parsing::ParsingTreeConverter::SetMember;

			bool SetMember(GuiIqNameOption& member, vl::Ptr<vl::parsing::ParsingTreeNode> node, const TokenList& tokens)
			{
				vl::Ptr<vl::parsing::ParsingTreeToken> token=node.Cast<vl::parsing::ParsingTreeToken>();
				if(token)
				{
					if(token->GetValue()==L"Specified") { member=GuiIqNameOption::Specified; return true; }
					else if(token->GetValue()==L"Any") { member=GuiIqNameOption::Any; return true; }
					else { member=GuiIqNameOption::Specified; return false; }
				}
				member=GuiIqNameOption::Specified;
				return false;
			}

			bool SetMember(GuiIqChildOption& member, vl::Ptr<vl::parsing::ParsingTreeNode> node, const TokenList& tokens)
			{
				vl::Ptr<vl::parsing::ParsingTreeToken> token=node.Cast<vl::parsing::ParsingTreeToken>();
				if(token)
				{
					if(token->GetValue()==L"Direct") { member=GuiIqChildOption::Direct; return true; }
					else if(token->GetValue()==L"Indirect") { member=GuiIqChildOption::Indirect; return true; }
					else { member=GuiIqChildOption::Direct; return false; }
				}
				member=GuiIqChildOption::Direct;
				return false;
			}

			bool SetMember(GuiIqBinaryOperator& member, vl::Ptr<vl::parsing::ParsingTreeNode> node, const TokenList& tokens)
			{
				vl::Ptr<vl::parsing::ParsingTreeToken> token=node.Cast<vl::parsing::ParsingTreeToken>();
				if(token)
				{
					if(token->GetValue()==L"ExclusiveOr") { member=GuiIqBinaryOperator::ExclusiveOr; return true; }
					else if(token->GetValue()==L"Intersect") { member=GuiIqBinaryOperator::Intersect; return true; }
					else if(token->GetValue()==L"Union") { member=GuiIqBinaryOperator::Union; return true; }
					else if(token->GetValue()==L"Substract") { member=GuiIqBinaryOperator::Substract; return true; }
					else { member=GuiIqBinaryOperator::ExclusiveOr; return false; }
				}
				member=GuiIqBinaryOperator::ExclusiveOr;
				return false;
			}

			void Fill(vl::Ptr<GuiIqQuery> tree, vl::Ptr<vl::parsing::ParsingTreeObject> obj, const TokenList& tokens)
			{
			}

			void Fill(vl::Ptr<GuiIqPrimaryQuery> tree, vl::Ptr<vl::parsing::ParsingTreeObject> obj, const TokenList& tokens)
			{
				SetMember(tree->childOption, obj->GetMember(L"childOption"), tokens);
				SetMember(tree->attributeNameOption, obj->GetMember(L"attributeNameOption"), tokens);
				SetMember(tree->attributeName, obj->GetMember(L"attributeName"), tokens);
				SetMember(tree->typeNameOption, obj->GetMember(L"typeNameOption"), tokens);
				SetMember(tree->typeName, obj->GetMember(L"typeName"), tokens);
				SetMember(tree->referenceName, obj->GetMember(L"referenceName"), tokens);
			}

			void Fill(vl::Ptr<GuiIqCascadeQuery> tree, vl::Ptr<vl::parsing::ParsingTreeObject> obj, const TokenList& tokens)
			{
				SetMember(tree->parent, obj->GetMember(L"parent"), tokens);
				SetMember(tree->child, obj->GetMember(L"child"), tokens);
			}

			void Fill(vl::Ptr<GuiIqSetQuery> tree, vl::Ptr<vl::parsing::ParsingTreeObject> obj, const TokenList& tokens)
			{
				SetMember(tree->first, obj->GetMember(L"first"), tokens);
				SetMember(tree->second, obj->GetMember(L"second"), tokens);
				SetMember(tree->op, obj->GetMember(L"op"), tokens);
			}

			vl::Ptr<vl::parsing::ParsingTreeCustomBase> ConvertClass(vl::Ptr<vl::parsing::ParsingTreeObject> obj, const TokenList& tokens)override
			{
				if(obj->GetType()==L"PrimaryQuery")
				{
					vl::Ptr<GuiIqPrimaryQuery> tree = new GuiIqPrimaryQuery;
					vl::collections::CopyFrom(tree->creatorRules, obj->GetCreatorRules());
					Fill(tree, obj, tokens);
					Fill(tree.Cast<GuiIqQuery>(), obj, tokens);
					return tree;
				}
				else if(obj->GetType()==L"CascadeQuery")
				{
					vl::Ptr<GuiIqCascadeQuery> tree = new GuiIqCascadeQuery;
					vl::collections::CopyFrom(tree->creatorRules, obj->GetCreatorRules());
					Fill(tree, obj, tokens);
					Fill(tree.Cast<GuiIqQuery>(), obj, tokens);
					return tree;
				}
				else if(obj->GetType()==L"SetQuery")
				{
					vl::Ptr<GuiIqSetQuery> tree = new GuiIqSetQuery;
					vl::collections::CopyFrom(tree->creatorRules, obj->GetCreatorRules());
					Fill(tree, obj, tokens);
					Fill(tree.Cast<GuiIqQuery>(), obj, tokens);
					return tree;
				}
				else 
					return 0;
			}
		};

		vl::Ptr<vl::parsing::ParsingTreeCustomBase> GuiIqConvertParsingTreeNode(vl::Ptr<vl::parsing::ParsingTreeNode> node, const vl::collections::List<vl::regex::RegexToken>& tokens)
		{
			GuiIqTreeConverter converter;
			vl::Ptr<vl::parsing::ParsingTreeCustomBase> tree;
			converter.SetMember(tree, node, tokens);
			return tree;
		}

/***********************************************************************
Parsing Tree Conversion Implementation
***********************************************************************/

		vl::Ptr<GuiIqPrimaryQuery> GuiIqPrimaryQuery::Convert(vl::Ptr<vl::parsing::ParsingTreeNode> node, const vl::collections::List<vl::regex::RegexToken>& tokens)
		{
			return GuiIqConvertParsingTreeNode(node, tokens).Cast<GuiIqPrimaryQuery>();
		}

		vl::Ptr<GuiIqCascadeQuery> GuiIqCascadeQuery::Convert(vl::Ptr<vl::parsing::ParsingTreeNode> node, const vl::collections::List<vl::regex::RegexToken>& tokens)
		{
			return GuiIqConvertParsingTreeNode(node, tokens).Cast<GuiIqCascadeQuery>();
		}

		vl::Ptr<GuiIqSetQuery> GuiIqSetQuery::Convert(vl::Ptr<vl::parsing::ParsingTreeNode> node, const vl::collections::List<vl::regex::RegexToken>& tokens)
		{
			return GuiIqConvertParsingTreeNode(node, tokens).Cast<GuiIqSetQuery>();
		}

/***********************************************************************
Visitor Pattern Implementation
***********************************************************************/

		void GuiIqPrimaryQuery::Accept(GuiIqQuery::IVisitor* visitor)
		{
			visitor->Visit(this);
		}

		void GuiIqCascadeQuery::Accept(GuiIqQuery::IVisitor* visitor)
		{
			visitor->Visit(this);
		}

		void GuiIqSetQuery::Accept(GuiIqQuery::IVisitor* visitor)
		{
			visitor->Visit(this);
		}

/***********************************************************************
Parser Function
***********************************************************************/

		vl::Ptr<vl::parsing::ParsingTreeNode> GuiIqParseAsParsingTreeNode(const vl::WString& input, vl::Ptr<vl::parsing::tabling::ParsingTable> table, vl::collections::List<vl::Ptr<vl::parsing::ParsingError>>& errors, vl::vint codeIndex)
		{
			vl::parsing::tabling::ParsingState state(input, table, codeIndex);
			state.Reset(L"QueryRoot");
			vl::Ptr<vl::parsing::tabling::ParsingGeneralParser> parser=vl::parsing::tabling::CreateStrictParser(table);
			vl::Ptr<vl::parsing::ParsingTreeNode> node=parser->Parse(state, errors);
			return node;
		}

		vl::Ptr<vl::parsing::ParsingTreeNode> GuiIqParseAsParsingTreeNode(const vl::WString& input, vl::Ptr<vl::parsing::tabling::ParsingTable> table, vl::vint codeIndex)
		{
			vl::collections::List<vl::Ptr<vl::parsing::ParsingError>> errors;
			return GuiIqParseAsParsingTreeNode(input, table, errors, codeIndex);
		}

		vl::Ptr<GuiIqQuery> GuiIqParse(const vl::WString& input, vl::Ptr<vl::parsing::tabling::ParsingTable> table, vl::collections::List<vl::Ptr<vl::parsing::ParsingError>>& errors, vl::vint codeIndex)
		{
			vl::parsing::tabling::ParsingState state(input, table, codeIndex);
			state.Reset(L"QueryRoot");
			vl::Ptr<vl::parsing::tabling::ParsingGeneralParser> parser=vl::parsing::tabling::CreateStrictParser(table);
			vl::Ptr<vl::parsing::ParsingTreeNode> node=parser->Parse(state, errors);
			if(node && errors.Count()==0)
			{
				return GuiIqConvertParsingTreeNode(node, state.GetTokens()).Cast<GuiIqQuery>();
			}
			return 0;
		}

		vl::Ptr<GuiIqQuery> GuiIqParse(const vl::WString& input, vl::Ptr<vl::parsing::tabling::ParsingTable> table, vl::vint codeIndex)
		{
			vl::collections::List<vl::Ptr<vl::parsing::ParsingError>> errors;
			return GuiIqParse(input, table, errors, codeIndex);
		}

/***********************************************************************
Table Generation
***********************************************************************/

		vl::Ptr<vl::parsing::tabling::ParsingTable> GuiIqLoadTable()
		{
			vl::stream::MemoryStream stream;
			GuiIqGetParserBuffer(stream);
			vl::Ptr<vl::parsing::tabling::ParsingTable> table=new vl::parsing::tabling::ParsingTable(stream);
			table->Initialize();
			return table;
		}

	}
}
namespace vl
{
	namespace reflection
	{
		namespace description
		{
#ifndef VCZH_DEBUG_NO_REFLECTION
			using namespace vl::presentation;

			IMPL_TYPE_INFO_RENAME(vl::presentation::GuiIqQuery, presentation::GuiIqQuery)
			IMPL_TYPE_INFO_RENAME(vl::presentation::GuiIqNameOption, presentation::GuiIqNameOption)
			IMPL_TYPE_INFO_RENAME(vl::presentation::GuiIqChildOption, presentation::GuiIqChildOption)
			IMPL_TYPE_INFO_RENAME(vl::presentation::GuiIqPrimaryQuery, presentation::GuiIqPrimaryQuery)
			IMPL_TYPE_INFO_RENAME(vl::presentation::GuiIqCascadeQuery, presentation::GuiIqCascadeQuery)
			IMPL_TYPE_INFO_RENAME(vl::presentation::GuiIqBinaryOperator, presentation::GuiIqBinaryOperator)
			IMPL_TYPE_INFO_RENAME(vl::presentation::GuiIqSetQuery, presentation::GuiIqSetQuery)
			IMPL_TYPE_INFO_RENAME(vl::presentation::GuiIqQuery::IVisitor, presentation::GuiIqQuery::IVisitor)

			BEGIN_CLASS_MEMBER(GuiIqQuery)
				CLASS_MEMBER_METHOD(Accept, {L"visitor"})

			END_CLASS_MEMBER(GuiIqQuery)

			BEGIN_ENUM_ITEM(GuiIqNameOption)
				ENUM_ITEM_NAMESPACE(GuiIqNameOption)
				ENUM_NAMESPACE_ITEM(Specified)
				ENUM_NAMESPACE_ITEM(Any)
			END_ENUM_ITEM(GuiIqNameOption)

			BEGIN_ENUM_ITEM(GuiIqChildOption)
				ENUM_ITEM_NAMESPACE(GuiIqChildOption)
				ENUM_NAMESPACE_ITEM(Direct)
				ENUM_NAMESPACE_ITEM(Indirect)
			END_ENUM_ITEM(GuiIqChildOption)

			BEGIN_CLASS_MEMBER(GuiIqPrimaryQuery)
				CLASS_MEMBER_BASE(GuiIqQuery)

				CLASS_MEMBER_CONSTRUCTOR(vl::Ptr<GuiIqPrimaryQuery>(), NO_PARAMETER)

				CLASS_MEMBER_EXTERNALMETHOD(get_attributeName, NO_PARAMETER, vl::WString(GuiIqPrimaryQuery::*)(), [](GuiIqPrimaryQuery* node){ return node->attributeName.value; })
				CLASS_MEMBER_EXTERNALMETHOD(set_attributeName, {L"value"}, void(GuiIqPrimaryQuery::*)(const vl::WString&), [](GuiIqPrimaryQuery* node, const vl::WString& value){ node->attributeName.value = value; })
				CLASS_MEMBER_EXTERNALMETHOD(get_typeName, NO_PARAMETER, vl::WString(GuiIqPrimaryQuery::*)(), [](GuiIqPrimaryQuery* node){ return node->typeName.value; })
				CLASS_MEMBER_EXTERNALMETHOD(set_typeName, {L"value"}, void(GuiIqPrimaryQuery::*)(const vl::WString&), [](GuiIqPrimaryQuery* node, const vl::WString& value){ node->typeName.value = value; })
				CLASS_MEMBER_EXTERNALMETHOD(get_referenceName, NO_PARAMETER, vl::WString(GuiIqPrimaryQuery::*)(), [](GuiIqPrimaryQuery* node){ return node->referenceName.value; })
				CLASS_MEMBER_EXTERNALMETHOD(set_referenceName, {L"value"}, void(GuiIqPrimaryQuery::*)(const vl::WString&), [](GuiIqPrimaryQuery* node, const vl::WString& value){ node->referenceName.value = value; })

				CLASS_MEMBER_FIELD(childOption)
				CLASS_MEMBER_FIELD(attributeNameOption)
				CLASS_MEMBER_PROPERTY(attributeName, get_attributeName, set_attributeName)
				CLASS_MEMBER_FIELD(typeNameOption)
				CLASS_MEMBER_PROPERTY(typeName, get_typeName, set_typeName)
				CLASS_MEMBER_PROPERTY(referenceName, get_referenceName, set_referenceName)
			END_CLASS_MEMBER(GuiIqPrimaryQuery)

			BEGIN_CLASS_MEMBER(GuiIqCascadeQuery)
				CLASS_MEMBER_BASE(GuiIqQuery)

				CLASS_MEMBER_CONSTRUCTOR(vl::Ptr<GuiIqCascadeQuery>(), NO_PARAMETER)


				CLASS_MEMBER_FIELD(parent)
				CLASS_MEMBER_FIELD(child)
			END_CLASS_MEMBER(GuiIqCascadeQuery)

			BEGIN_ENUM_ITEM(GuiIqBinaryOperator)
				ENUM_ITEM_NAMESPACE(GuiIqBinaryOperator)
				ENUM_NAMESPACE_ITEM(ExclusiveOr)
				ENUM_NAMESPACE_ITEM(Intersect)
				ENUM_NAMESPACE_ITEM(Union)
				ENUM_NAMESPACE_ITEM(Substract)
			END_ENUM_ITEM(GuiIqBinaryOperator)

			BEGIN_CLASS_MEMBER(GuiIqSetQuery)
				CLASS_MEMBER_BASE(GuiIqQuery)

				CLASS_MEMBER_CONSTRUCTOR(vl::Ptr<GuiIqSetQuery>(), NO_PARAMETER)


				CLASS_MEMBER_FIELD(first)
				CLASS_MEMBER_FIELD(second)
				CLASS_MEMBER_FIELD(op)
			END_CLASS_MEMBER(GuiIqSetQuery)

			BEGIN_CLASS_MEMBER(GuiIqQuery::IVisitor)
				CLASS_MEMBER_BASE(vl::reflection::IDescriptable)
				CLASS_MEMBER_EXTERNALCTOR(Ptr<GuiIqQuery::IVisitor>(Ptr<IValueInterfaceProxy>), {L"proxy"}, &interface_proxy::GuiIqQuery_IVisitor::Create)

				CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(GuiIqQuery::IVisitor::*)(GuiIqPrimaryQuery* node))
				CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(GuiIqQuery::IVisitor::*)(GuiIqCascadeQuery* node))
				CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(GuiIqQuery::IVisitor::*)(GuiIqSetQuery* node))
			END_CLASS_MEMBER(GuiIqQuery)

			class GuiIqTypeLoader : public vl::Object, public ITypeLoader
			{
			public:
				void Load(ITypeManager* manager)
				{
					ADD_TYPE_INFO(vl::presentation::GuiIqQuery)
					ADD_TYPE_INFO(vl::presentation::GuiIqNameOption)
					ADD_TYPE_INFO(vl::presentation::GuiIqChildOption)
					ADD_TYPE_INFO(vl::presentation::GuiIqPrimaryQuery)
					ADD_TYPE_INFO(vl::presentation::GuiIqCascadeQuery)
					ADD_TYPE_INFO(vl::presentation::GuiIqBinaryOperator)
					ADD_TYPE_INFO(vl::presentation::GuiIqSetQuery)
					ADD_TYPE_INFO(vl::presentation::GuiIqQuery::IVisitor)
				}

				void Unload(ITypeManager* manager)
				{
				}
			};
#endif

			bool GuiIqLoadTypes()
			{
#ifndef VCZH_DEBUG_NO_REFLECTION
				ITypeManager* manager=GetGlobalTypeManager();
				if(manager)
				{
					Ptr<ITypeLoader> loader=new GuiIqTypeLoader;
					return manager->AddTypeLoader(loader);
				}
#endif
				return false;
			}
		}
	}
}
